package com.company.beauty.common.retry;

import lombok.extern.slf4j.Slf4j;

import java.util.List;

/**
 * <p>retry request handler</p >
 *
 * @author youyoukele
 * @version 1.0
 * @date 2024/4/17 11:07
 */
public interface RetryRequestHandler {

    /**
     * 权重，若有多个实现，优先获取高权重的实现
     *
     * @return
     */
    default int weight() {
        return 0;
    }

    /**
     * 获取所有重试数据
     *
     * @return
     */
    List<RetryRequest> getRetryList();

    /**
     * 新增重试数据
     *
     * @param requestId   可以使用UUID或者雪花编号
     * @param url         请求链接 e.g http://xxxx-service/xxxxxx
     * @param requestBody 请求参数 e.g {"id": 123}
     */
    void addRetry(String requestId, String url, String requestBody);

    /**
     * 移除重试数据
     *
     * @param retryRequest
     */
    void removeRetry(RetryRequest retryRequest);

    @Slf4j
    class Log {
    }
}
